package com.qdlc.p2p.biz.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.qdlc.p2p.biz.service.UserInviteService;
import com.qdlc.p2p.common.util.DateUtil;
import com.qdlc.p2p.common.util.StringUtil;
import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dao.BorrowTenderDao;
import com.qdlc.p2p.dal.dao.UserDao;
import com.qdlc.p2p.dal.dao.UserInviteDao;
import com.qdlc.p2p.dal.dto.User;
import com.qdlc.p2p.dal.dto.UserInvite;
import com.qdlc.p2p.dal.model.UserInviteModel;

/**
 * 邀请人Service
 * @author linya
 * @date 2016-04-21
 */
@Service("userInviteService")
public class UserInviteServiceImpl implements UserInviteService {

    @Resource
    private UserInviteDao userInviteDao;

    @Resource
    private BorrowTenderDao borrowTenderDao;

    @Resource
    private UserDao userDao;

    @Override
    public PageDataList<UserInviteModel> findByInviteUser(User inviteUserParam, int page) {
        UserInviteModel userInviteModel = new UserInviteModel();
        userInviteModel.setInviteUser(inviteUserParam.getUserId());
        userInviteModel.setPage(page);
        userInviteModel.setRows(10);
        PageDataList<UserInvite> pageDataList = userInviteDao.findPageList(userInviteModel);
        PageDataList<UserInviteModel> pageDataList_ = new PageDataList<UserInviteModel>();
        List<UserInviteModel> list = new ArrayList<UserInviteModel>();
        pageDataList_.setPage(pageDataList.getPage());
        if (null != pageDataList.getList() && pageDataList.getList().size() > 0) {
            for (UserInvite ui : pageDataList.getList()) {
                UserInviteModel uim = UserInviteModel.instance(ui);
                User user = userDao.getUserById(ui.getUserId());
                User inviteUser = userDao.getUserById(ui.getInviteUser());
                uim.setInviteUserName(inviteUser.getUserName());
                uim.setUserName(user.getHideUserName());
                uim.setTotalInvest(borrowTenderDao.investAmount(ui.getUserId()));
                list.add(uim);
            }
        }
        pageDataList_.setList(list);
        return pageDataList_;
    }

    @Override
    public PageDataList<UserInviteModel> findByModel(UserInviteModel model) {
        if (StringUtil.isNotBlank(model.getUserName())) {
            model.setUserName(model.getUserName().trim());
        }
        if (StringUtil.isNotBlank(model.getRegStartTime())) {
            model.setRegStartTimeDate(DateUtil.valueOf(model.getRegStartTime()));
        }
        if (StringUtil.isNotBlank(model.getRegEndTime())) {
            Date date = DateUtil.valueOf(model.getRegEndTime());
            model.setRegEndTimeDate(DateUtil.rollDay(date, 1));
        }
        PageDataList<UserInvite> pageDataList = userInviteDao.findPageList(model);
        PageDataList<UserInviteModel> pageDataList_ = new PageDataList<UserInviteModel>();
        List<UserInviteModel> list = new ArrayList<UserInviteModel>();
        pageDataList_.setPage(pageDataList.getPage());
        if (pageDataList.getList().size() > 0) {
            for (UserInvite ui : pageDataList.getList()) {
                User user = userDao.getUserById(ui.getUserId());
                User inviteUser = userDao.getUserById(ui.getInviteUser());
                UserInviteModel uim = UserInviteModel.instance(ui);
                uim.setInviteUserName(inviteUser.getUserName());
                uim.setInviteRealName(inviteUser.getRealName());
                uim.setUserName(user.getUserName());
                uim.setRealName(user.getRealName());
                uim.setRegTime(user.getAddTime());
                list.add(uim);
            }
        }
        pageDataList_.setList(list);
        return pageDataList_;
    }

	@Override
	public UserInvite findByUserId(Long userId) {
		return userInviteDao.findByUserId(userId);
	}
    
}
